/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Daniel,Alejandro,Jairo
 */
import java.util.ArrayList;
import java.util.Iterator;
import java.io.*;

public class Mercado implements Serializable {

    ArrayList<Jugador> jugadores_sin_equipo;
    ArrayList<Equipo> equipos;

    public Mercado() {
        jugadores_sin_equipo = new ArrayList();
        equipos = new ArrayList();

    }

    public void guardarPartida(String ruta) {
        ruta = ruta+".dat";
        try {
            
            FileOutputStream f = new FileOutputStream(ruta);
            ObjectOutputStream file = new ObjectOutputStream(f);

            file.writeObject(this.jugadores_sin_equipo);

            file.writeObject(this.equipos);

            file.close();
            f.close();
        } catch (IOException ex) {
            System.out.println(ex.getMessage());
        }

    }

    public void cargarPartida(String ruta) {
        ArrayList<Jugador> j = null;
        ArrayList<Equipo> e = null;
        try {
            FileInputStream f = new FileInputStream(ruta);
            ObjectInputStream file = new ObjectInputStream(f);

            j = (ArrayList<Jugador>) file.readObject();

            if (j != null) {
                for (Jugador p : j) {
                    this.jugadores_sin_equipo = j;
                }
            }
            e = (ArrayList<Equipo>) file.readObject();
            if (e != null) {
                for (Equipo eq : e) {
                    this.equipos = e;
                }
            }

            file.close();
            f.close();
        } catch (EOFException ex) {
            System.out.println("Fin de fichero");
        } catch (ClassNotFoundException ex) {
            ex.printStackTrace();

        } catch (IOException ex) {
            System.out.println(ex.getMessage());

        }

    }

    public String toString() {

        StringBuffer buffer = new StringBuffer();
        Iterator<Jugador> it = this.jugadores_sin_equipo.iterator();
        while (it.hasNext()) {
            buffer.append(it.next().toString());
        }
        String dato = "Jugadores Libres: \n" + buffer;
        return dato;
    }

    public String mostrarEquipo() {

        StringBuffer buffer2 = new StringBuffer();
        Iterator<Equipo> it2 = this.equipos.iterator();
        while (it2.hasNext()) {
            buffer2.append(it2.next().jugadores.toString());
        }
        String dato = "Equipos: \n" + buffer2;
        return dato;
    }

    public void añadirEquipo(Equipo e) {
        this.equipos.add(e);
    }

    public void eliminarEquipo(Equipo e) {
        if (!this.equipos.isEmpty()) {
            Iterator<Jugador> it = e.jugadores.iterator();
            while (it.hasNext()) {
                this.añadirJugador(it.next());
            }
            this.equipos.remove(e);
        }

    }
    public Equipo buscarEquipo (String nombre,ArrayList<Equipo> l){
        Equipo res = null;
        boolean find=false;
        Iterator<Equipo> it = l.iterator();
        while(it.hasNext()&& find==false){
            Equipo aux=it.next();
           if(aux.getNombre().equals(nombre)){
               res=aux;
               find=true;
           } 
        }
        return res;
    }

    public void añadirJugador(Jugador j) {
        this.jugadores_sin_equipo.add(j);
    }

    public void eliminarJugador(Jugador j) {
        if (!this.jugadores_sin_equipo.isEmpty()) {
            this.jugadores_sin_equipo.remove(j);
        }
    }

}
